package cn.com.scitc.licenseplateback.dateFormat;

import org.springframework.stereotype.Component;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

@Component
public class DateFormat {

    /**
     * 获取系统当前日期时间
     * @return 2019-10-16 01:13:18
     */
    public String getCurrentDateTime(){
        // 创建Calendar对象
        Calendar c = Calendar.getInstance();

        // 将Calendar对象转换为Date对象
        Date date = c.getTime();

        // 创建SimpleDateFormat对象，指定目标格式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        // 将日期转换为指定格式的字符串
        String now = sdf.format(date);

        return now;
    }

    /**
     * 返回当前时间戳
     * @return 1571227374929
     */
    public String getCurrentTimeMillis(){
        Calendar c = Calendar.getInstance();
        String str = String.valueOf( c.getTimeInMillis());
        return str;
    }

    /**
     * 将日期字符串转日期对象，并实现日期加减运算
     * @param datetime 日期字符串
     * @param day 天数
     * @return Date对象
     */
    public Date formatDateTime(String datetime, int day){

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        Date date = null;
        try {
            //1. 将当前 日期字符 串转换为 Date日期对象
            date = simpleDateFormat.parse(datetime);

            //2. 将当前Date日期对象 转换为 Calendar 日历对象
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(date);

            //3. 将日历对象的 Date 天数进行加减运算
            calendar.add(Calendar.DATE, day);

            //4. 将日历对象 两次转换为 date 对象
            date = calendar.getTime();

        } catch (ParseException e) {
            e.printStackTrace();
        }
        return date;
    }

    /**
     * 与系统当前日期时间进行比较
     * @param date 比较日期时间
     * @return true表当前时间比指定时间小， false表指定时间比当前时间小
     */
    public boolean currentDateComparison(Date date){
        //获取系统当前时间
        Date currnetDate = new Date();

        if (currnetDate.getTime() < date.getTime()){
            return true;
        }
        return false;
    }
}
